package view;

import controller.Controleur;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import model.User;

/**
 * Classe representant un contact de la liste graphique des contacts
 * @author Lefevre, Thoue
 */
public class PanelFriend extends JPanel {

    private Controleur controleur;
    private JLabel appelerButton;
    private JLabel supprimerButton;
    /**
     * Constructeur
     * @param controleur controleur de l'application
     * @param user contact
     */
    public PanelFriend(Controleur controleur, User user) {
        this.controleur = controleur;
        this.setOpaque(false);
        this.setLayout(new FlowLayout());
        this.setPreferredSize(new Dimension(220, 25));
        
        supprimerButton = new JLabel(new ImageIcon(getClass().getResource("delete16.png")));
        supprimerButton.setPreferredSize(new Dimension(16, 16));
        supprimerButton.addMouseListener(new SupprimerContactListenner(user));
        this.add(supprimerButton);
        
        JPanel panelNom = new JPanel();
        panelNom.setPreferredSize(new Dimension(120, 25));
        panelNom.setOpaque(false);
        panelNom.add(new JLabel(user.getNom() + " " + user.getPrenom()));
        this.add(panelNom);

        appelerButton = new JLabel(new ImageIcon(getClass().getResource("call16.png")));
        appelerButton.setPreferredSize(new Dimension(16, 16));
        appelerButton.setToolTipText("Appeler");
        appelerButton.addMouseListener(new AppelContactListenner(user));
        this.add(appelerButton);

    }
    /**
     * Classe representant le listener du bouton utilise pour appeler le contact
     */
    class AppelContactListenner extends MouseAdapter {

        private User user;
        /**
         * Constructeur
         * @param user contact courant
         */
        public AppelContactListenner(User user) {
            this.user = user;
        }
        /**
         * Evenement de clique sur le bouton
         * @param me evenement
         */
        @Override
        public void mouseClicked(MouseEvent me) {
             controleur.appeler(user.getIp(), user.getPort());
        }
         /**
         * Evenement desurvol du bouton pour changer l'image
         * @param e evenement de survol
         */
        @Override
        public void mouseEntered(MouseEvent e) {
            appelerButton.setIcon(new ImageIcon(getClass().getResource("call16-light.png")));
        }
       /**
         * Evenement de fin du survol du bouton pour changer l'image
         * @param e evenement de fin de survol
         */
        @Override
        public void mouseExited(MouseEvent e) {
            appelerButton.setIcon(new ImageIcon(getClass().getResource("call16.png")));
        }
    }
    /**
     * Classe representant le listener du bouton utilise pour supprimer un contact
     */
    class SupprimerContactListenner extends MouseAdapter {

        private User user;
        /**
         * Constructeur
         * @param user contact courant
         */
        public SupprimerContactListenner(User user) {
            this.user = user;
        }
        /**
         * Evenement de clique sur le bouton
         * @param e evenement de clique de la souris
         */
        @Override
        public void mouseClicked(MouseEvent me) {
            controleur.supprimerContact(user);
            controleur.saveContact();
        }
    }
}
